package com.hc.mall.product;

import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
import org.springframework.cloud.openfeign.EnableFeignClients;

/**
 * 1.整合MyBatis-Plus
 * 	 1）导入依赖
 * 	 2）配置
 * 	 	2.1）配置数据源
 * 	 		2.1.1）导入数据库驱动
 * 	 		2.1.2）在application.yml配置数据源信息
 * 	 	2.2）配置MyBatis-Plus
 * 	 		2.2.1）配置包扫描 @MapperScan
 * 	 		2.2.2）配置sql映射文件位置
 * 	2.逻辑删除
 * 	 1）配置全局逻辑删除规则
 * 	 2）在需要逻辑删除的Bean上添加@TableLogic注解
 * 	3.JSR303校验
 * 	 1）给Bean添加校验注解，可添加自己的校验提示
 * 	 2）请求方法上配置@Valid开启校验
 * 	 3）给校验的Bean后紧跟BindingResult就可以获取到校验结果
 * 	 4）分组校验
 * 	 	4.1）给@NotNull等校验注解上标注groups值
 * 	 	4.2）使用@Validated替代@Valid并指定类型
 * 	 	4.3）未指定分组的注解在分组校验情况下（@Validated指定了分组值）将失效
 * 	 5）自定义校验
 * 	 	5.1）自定义校验注解
 * 	    5.2）自定义校验器
 * 	    5.3）关联以上两者
 * 	4.统一异常处理
 * 	 1）使用@ControllerAdvice
 * 2.整合SpringCache简化缓存开发
 * 	 1）引入依赖
 * 	 2）写配置
 * 	 	2.1）自动配置了哪些
 * 	 		RedisCacheConfiguration
 * 	 	2.2）还有配置哪些
 * 	 		使用Redis作为缓存
 * 	 3）使用缓存
 *       @Cacheable 将数据保存到缓存
 *       @CacheEvict 删除数据从缓存
 *       @CachePut  不影响方法执行更新缓存
 *       @Caching  组合以上多个操作
 *       @CacheConfig 在类级别共享缓存的相同配置
 *       3.1）开启缓存 @EnableCaching
 *       3.2）使用注解
 */

@SpringBootApplication
@EnableDiscoveryClient
@EnableFeignClients(basePackages = "com.hc.mall.product.feign")
@MapperScan("com.hc.mall.product.dao")
public class MallProductApplication {

	public static void main(String[] args) {
		SpringApplication.run(MallProductApplication.class, args);
	}

}
